package Control_Teclado;

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import Naves.Tanques.Tanque;

/**Clase encargada de detectar los eventos del teclado y de manejarlos
 * 
 * @author Javier Graff
 * @author Eric Avondet
 * @author Rodrigo Herrera
 *
 */
public class ManejadorDeTeclas implements KeyListener 
{

	//procesador de teclas
	protected Accionadordeteclas procesador;
	protected AccionadorDisparo disparos;
	
	
	
	
	/**
	 * Constructor
	 * @param t tanque
	 */
	public ManejadorDeTeclas(Tanque t)
	{
		procesador = new Accionadordeteclas(t,40);
		procesador.start();
		disparos = new AccionadorDisparo(t,100);
		disparos.start();
	}
	
	/**
	 * se deja de actuar ante la presion de las teclas
	 */
	public void fin()
	{
		procesador.stop();
		disparos.stop();
	}
	
	/**
	 * juego en pausa, el teclado no responde
	 */
	public void pausa()
	{
		procesador.pausa();
		disparos.pausa();
	}
	
	/**
	 * juego deja de estar en pausa, el teclado responde
	 */
	public void fin_pausa()
	{
		procesador.fin_pausa();
		disparos.fin_pausa();
	}
	
	
	/**
	 * setea en el procesador determinado las teclas presionadas
	 */
	public void keyPressed(KeyEvent k) {
		
		if ((k.getKeyCode() == KeyEvent.VK_UP)
				|| (k.getKeyCode() == KeyEvent.VK_LEFT)
				|| (k.getKeyCode() == KeyEvent.VK_RIGHT)
				|| (k.getKeyCode() == KeyEvent.VK_DOWN)
				) 
			{
				procesador.setTecla(k.getKeyCode(), true);
			}

		else if ((k.getKeyCode() == KeyEvent.VK_S) 
				||(k.getKeyCode() == KeyEvent.VK_A)
				||(k.getKeyCode() == KeyEvent.VK_D)
				||(k.getKeyCode() == KeyEvent.VK_SPACE))
			disparos.setTecla(k.getKeyCode(), true);
			

	}
	
	

	/**
	 * Setea en el procesador determinado las teclas que se dejan de apretar
	 */
	public void keyReleased(KeyEvent k) 
	{
		
		if ((k.getKeyCode() == KeyEvent.VK_UP)
				|| (k.getKeyCode() == KeyEvent.VK_LEFT)
				|| (k.getKeyCode() == KeyEvent.VK_RIGHT)
				|| (k.getKeyCode() == KeyEvent.VK_DOWN)
				) 
		{
			procesador.setTecla(k.getKeyCode(), false);
		}
		else if ((k.getKeyCode() == KeyEvent.VK_S) 
				||(k.getKeyCode() == KeyEvent.VK_A)
				||(k.getKeyCode() == KeyEvent.VK_D)
				||(k.getKeyCode() == KeyEvent.VK_SPACE))
			disparos.setTecla(k.getKeyCode(), false);
		
	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub
		
		
	}

}
